/**
 * 验证obj的所有键都有值
 */
export const objFull = (obj) => {
  for(var key in obj){
    if (!obj[key]) {
      return false;
    }
    
}return true
}
/**
 * 强制保留2位小数，不足补 0 
 */
export const toDecimal = (x) => {
  var f = parseFloat(x);
  if (isNaN(f)) {
    return false;
  }
  var f = Math.round(x * 100) / 100;
  var s = f.toString();
  var rs = s.indexOf('.');
  if (rs < 0) {
    rs = s.length;
    s += '.';
  }
  while (s.length <= rs + 2) {
    s += '0';
  }
  return s;
}
/**
 * @des 获取当前时间戳
 *
 */
export const getNowSS = (code) => {
  var date = new Date();
  var timestamp = date.getTime()
  return  timestamp ;
}
// 获取当前日期
export const getNowFormatDate = () => {
  var date = new Date();
  var seperator1 = "-";
  var year = date.getFullYear();
  var month = date.getMonth() + 1;
  var strDate = date.getDate();
  if (month >= 1 && month <= 9) {
    month = "0" + month;
  }
  if (strDate >= 0 && strDate <= 9) {
    strDate = "0" + strDate;
  }
  var currentdate = year + seperator1 + month + seperator1 + strDate;
  return currentdate;
};
//获取相差x天的时间
export const getendFormatDate = (day) => {
  var date = new Date().getTime();
  date=date-(24*60*60*1000)*day;
  date = new Date(date);
  var seperator1 = "-";
  var year = date.getFullYear();
  var month = date.getMonth() + 1;
  var strDate = date.getDate();
  if (month >= 1 && month <= 9) {
    month = "0" + month;
  }
  if (strDate >= 0 && strDate <= 9) {
    strDate = "0" + strDate;
  }
  var currentdate = year + seperator1 + month + seperator1 + strDate;
  return currentdate;
};
 
// 只有年月日
export const formatDate = (secs) => {
  var t = new Date(secs)
  var year = t.getFullYear()
  var month = t.getMonth() + 1
  if (month < 10) {
    month = '0' + month
  }
  var date = t.getDate()
  if (date < 10) {
    date = '0' + date
  }
  var hour = t.getHours()
  if (hour < 10) {
    hour = '0' + hour
  }
  var minute = t.getMinutes()
  if (minute < 10) {
    minute = '0' + minute
  }
  var second = t.getSeconds()
  if (second < 10) {
    second = '0' + second
  }
  return year + '-' + month + '-' + date
}
//时间转换城年月日
export const formatstr = (secs)=>{
  let  arr= secs.split('-')
  
  return arr[0]+'年'+arr[1]+'月'+arr[2]+'日';
}
/**
 * @desc 校验银行卡号
 *
 * @param code 银行卡号
 *
 * @returns Boolean 校验结果
 */
export const verifyBankCard = (code) => {
  let bankCardNumberIdentify = /^(\d{16}|\d{19})$/;
  return bankCardNumberIdentify.test(code);
}



/**
 * basc64加密
 * 
 * 怎么用var str = ‘hello world!’;
 * var enstr = BASE64.encode(str);
 * 加密 console.log(enstr);
 * var destr = BASE64.decode(enstr); 
 * 解析console.log(destr);
 */
export function Base64() {

  var BASE64 = {
    enKey: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',

    deKey: new Array(
      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
      52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
      -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
      15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
      -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
      41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
    ),

    encode: function (src) {
      //用一个数组来存放编码后的字符，效率比用字符串相加高很多。
      var str = new Array();
      var ch1, ch2, ch3;
      var pos = 0;
      //每三个字符进行编码。
      while (pos + 3 <= src.length) {
        ch1 = src.charCodeAt(pos++);
        ch2 = src.charCodeAt(pos++);
        ch3 = src.charCodeAt(pos++);
        str.push(this.enKey.charAt(ch1 >> 2), this.enKey.charAt(((ch1 << 4) + (ch2 >> 4)) & 0x3f));
        str.push(this.enKey.charAt(((ch2 << 2) + (ch3 >> 6)) & 0x3f), this.enKey.charAt(ch3 & 0x3f));
      }
      //给剩下的字符进行编码。
      if (pos < src.length) {
        ch1 = src.charCodeAt(pos++);
        str.push(this.enKey.charAt(ch1 >> 2));
        if (pos < src.length) {
          ch2 = src.charCodeAt(pos);
          str.push(this.enKey.charAt(((ch1 << 4) + (ch2 >> 4)) & 0x3f));
          str.push(this.enKey.charAt(ch2 << 2 & 0x3f), '=');
        } else {
          str.push(this.enKey.charAt(ch1 << 4 & 0x3f), '==');
        }
      }
      //组合各编码后的字符，连成一个字符串。
      return str.join('');
    },

    decode: function (src) {
      //用一个数组来存放解码后的字符。
      var str = new Array();
      var ch1, ch2, ch3, ch4;
      var pos = 0;
      //过滤非法字符，并去掉'='。
      src = src.replace(/[^A-Za-z0-9\+\/]/g, '');
      //decode the source string in partition of per four characters.
      while (pos + 4 <= src.length) {
        ch1 = this.deKey[src.charCodeAt(pos++)];
        ch2 = this.deKey[src.charCodeAt(pos++)];
        ch3 = this.deKey[src.charCodeAt(pos++)];
        ch4 = this.deKey[src.charCodeAt(pos++)];
        str.push(String.fromCharCode(
          (ch1 << 2 & 0xff) + (ch2 >> 4), (ch2 << 4 & 0xff) + (ch3 >> 2), (ch3 << 6 & 0xff) + ch4));
      }
      //给剩下的字符进行解码。
      if (pos + 1 < src.length) {
        ch1 = this.deKey[src.charCodeAt(pos++)];
        ch2 = this.deKey[src.charCodeAt(pos++)];
        if (pos < src.length) {
          ch3 = this.deKey[src.charCodeAt(pos)];
          str.push(String.fromCharCode((ch1 << 2 & 0xff) + (ch2 >> 4), (ch2 << 4 & 0xff) + (ch3 >> 2)));
        } else {
          str.push(String.fromCharCode((ch1 << 2 & 0xff) + (ch2 >> 4)));
        }
      }
      //组合各解码后的字符，连成一个字符串。
      return str.join('');
    }

  };
  return BASE64;

}


export function toastSuc(_this,obj={}) {
  _this.$toast.success({
    duration: 0, // 持续展示 toast
    forbidClick: true, // 禁用背景点击
    loadingType: "spinner",
    message: obj.msg
  });
  let second = obj.t;
  const timer = setInterval(() => {
    second--;
    if (!second) {
      clearInterval(timer);
      _this.$toast.clear();
      _this.$router.push({ path: "/"+obj.url });
    }
  }, 1000);
}